之前很常遇到,開發了老半天後端程式,終於上了dev,結果打沒幾下api,gcp的alerting就開始狂響...
然後就會看到一片紅色的 panic: runtime error: invalid memory address or nil pointer dereference
這時候總會想... 如果能有工具幫我檢查該有多好呢?
上週假日開始練習沒事就看看科技龍頭們的github都是怎麼寫的,來多多訓練自己的思維跟手感
意外的在 uber 的repo中發現了好貨 https://github.com/uber-go/nilaway
二話不說來玩玩看吧
首先安裝 go install go.uber.org/nilaway/cmd/nilaway@latest
404... 囧 看起來社群已經有反應這個問題,畢竟也是上週剛開始的專案,就再等等囉
根據官方的readme看起來,是基於原生的 nilness check去進行優化,解決一些function間呼叫造成的間接 nil pointer dereference問題
var Analyzer = &analysis.Analyzer{
Name: "nilaway",
Doc: _doc,
Run: run,
FactTypes: []analysis.Fact{},
Requires: []*analysis.Analyzer{accumulation.Analyzer},
}
func main() {
singlechecker.Main(nilaway.Analyzer)
}
使用了上面的 Analyzer
第一天就這樣拉~~ 下次再繼續看 package accumulation